<template>
  <UploadExcel :on-success="onSuccess" />
</template>

<script>
import { addEmployees, getEmployeeList } from '@/api/employees'
export default {
  data() {
    return {
      arr: []
    }
  },
  created() {
    this.getEmployeeList()
  },
  methods: {
    async getEmployeeList() {
      const { rows } = await getEmployeeList({ page: 1, size: this.$route.query.total })
      this.arr = rows
    },
    onSuccess({ header, results }) {
      // result 数组中每一项的 key 是中文的，我们需要转化为英文
      // console.log(results)
      // username	string		姓名
      // mobile	string		手机号
      // formOfEmployment	number		聘用形式
      // workNumber	string		工号
      // departmentName	string		组织名称
      // timeOfEntry	string		入职时间
      // correctionTime	string		转正时间
      for (let i = 0; i < results.length; i++) {
        for (let j = 0; j < this.arr.length; j++) {
          if (results[i]['手机号'] === parseInt(this.arr[j].mobile)) {
            results.splice(i, 1)
            i--
            break
          }
        }
      }
      const obj = {
        '入职日期': 'timeOfEntry',
        '姓名': 'username',
        '工号': 'workNumber',
        '手机号': 'mobile',
        '转正日期': 'correctionTime'
      }
      const list = results.map(item => {
        const obj1 = {}
        Object.keys(obj).forEach(key => {
          // key 是中文  obj[key] 是英文
          if (obj[key] === 'timeOfEntry' || obj[key] === 'correctionTime') {
            obj1[obj[key]] = this.formatDate(item[key], '-')
          } else {
            obj1[obj[key]] = item[key]
          }
        })
        return obj1
      })
      // console.log(list)
      // const list = JSON.stringify(results).replace(/(入职日期|姓名|工号|手机号|转正日期)/g, key => obj[key])
      try {
        addEmployees(list)
        this.$message.success('导入成功')
        this.$router.push('/employees')
      } catch (error) {
        this.$message.error('导入失败')
      }
    },
    formatDate(numb, format) {
      // time 为标准时间
      const time = new Date((numb - 1) * 24 * 36000 - 1)
      // console.log(time)
      // 获取到年数 在减去70 因为天数是以1900年开始的，而js中的年是以1970开始的
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>

<style>

</style>
